package com.weimob.cloud.api.crm.req;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 微盟发送优惠券给指定客户请求参数
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WeimobCrmCouponReceiveReq implements Serializable {

    /**
     * 批量领取券列表
     */
    @JsonProperty("couponNums")
    private List<CouponNumsDTO> couponNums;

    /**
     * 待发券的用户 ID，是微盟用户身份的唯一标识。可通过 bos/user/search  接口返回参数中的 data.result 获取该 wid。
     */
    @JsonProperty("wid")
    private Integer wid;

    /**
     * 领券场景。目前仅支持 945000-api发券。
     */
    @JsonProperty("scene")
    private Integer scene;

    /**
     * 组织类型，与 vid 相对应。类型包括：1-集团；2-品牌；3-区域；4部门；5-商场；6-楼层；10-门店；11-网点；100-自提点。可以通过 bos/organization/getList 接口返回参数中的 data.vidType 获取指定组织的类型。
     */
    @JsonProperty("vidType")
    private Integer vidType;

    /**
     * 待发券给指定客户的组织 ID，是 创建组织 时自动生成的 ID，可以通过 bos/organization/getList 接口返回参数中的 data.vid 获取该 ID。
     */
    @JsonProperty("vid")
    private Long vid;

    /**
     * 领券场景 ID，用于做标识。可自定义输入。不填时为空。
     */
    @JsonProperty("sceneId")
    private Integer sceneId;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class CouponNumsDTO implements Serializable {

        /**
         * 待发券的优惠券码值。可通过 weimob_crm/coupon/template/search 接口返回参数中的 data.pageList.code 获取该码值。
         */
        @JsonProperty("code")
        private String code;

        /**
         * 有效期的开始时间，有效期类型为“领取后生效”时，则可使用本接口设置有效期。格式为日期字符串“yyyy-MM-dd HH:mm:ss”。可通过 weimob_crm/coupon/template/detail/get 接口返回参数中的 data.useRule.useValidDate.useTimeType 获取改时间。
         */
        @JsonProperty("effectStartTime")
        private String effectStartTime;

        /**
         * 该次发券的请求流水号，用于操作幂等。可自定义输入，与 requestType 搭配使用，需保证全局唯一。字符最大限制为 64。
         */
        @JsonProperty("requestId")
        private String requestId;

        /**
         * 用户可领取的优惠券数量
         */
        @JsonProperty("num")
        private Integer num;

        /**
         * 待发券的优惠券 ID 列表，可通过 weimob_crm/coupon/template/search 接口返回参数中的 data.pageList.couponTemplateId 获取该 ID。
         */
        @JsonProperty("couponTemplateId")
        private Integer couponTemplateId;

        /**
         * 有效期的结束时间，有效期类型为“领取后生效”时，则可使用本接口设置有效期。格式为日期字符串“yyyy-MM-dd HH:mm:ss”。可通过 weimob_crm/coupon/template/detail/get 接口返回参数中的 data.useRule.useValidDate.useEndTime 获取改时间。
         */
        @JsonProperty("effectEndTime")
        private String effectEndTime;
    }
}
